import request from '@/config/axios'

export interface MainTasksPageReqVO {
  pageNo: number
  pageSize: number
  userId?: number
  taskNumber?: string
  taskName?: string
  taskType?: number
  status?: number
  taskFinishStatus?: number
  createTime?: string[]
}

// 主任务管理 VO
export interface MainTasksVO {
  id: number // 序号
  userId: number // 申请人id
  taskNumber: string // 任务号
  taskName: string // 任务名称
  taskType: number // 任务类型
  paymentReceived: number // 是否已收款
  paymentDate: Date // 收款日期
  paymentAmount: number // 收费金额
  paymentMethod: string // 收款方式
  teamMembers: string // 参与人员
  companyInfo: string // 公司信息
  notPayReason: string // 未收款原因
  isInvoiced: number // 是否开票
  notInvoicedReason: string // 未开票原因
  invoicedCompany: string // 开票方
  payee: string // 收票方
  invoicedDate: Date // 开票日期
  collectionCompany: string // 收款公司
  files: string // 任务附件
  remark: string // 备注
  status: number // 审批结果
  processInstanceId: string // 流程实例的编号
  onlineDocuments?: string
  userName: string
  chargeUserId: number
  chargeUserName: string
  taskFinishStatus: number
  terminationReason?: string
  teamMemberNames: string
  totalTaskCount: number
  finishedTaskCount: number
  createTime: string
  updateTime: string
}

export interface PageResult<T> {
  list: T[]
  total: number
}

// 主任务管理 API
export const MainTasksApi = {
  // 获取主任务列表
  getMainTasksList: () => {
    return request.get({ url: '/oa/main-tasks/list' })
  },
  
  // 获取主任务分页（全部）
  getMainTasksPageAll: (params: MainTasksPageReqVO) => {
    return request.get({ url: '/oa/main-tasks/pageAll', params })
  },

  // 获取主任务分页（我发起的）
  getMainTasksPageOwner: (params: MainTasksPageReqVO) => {
    return request.get({ url: '/oa/main-tasks/pageOwner', params })
  },

  // 分页获取本部门主任务
  getDeptMainTasksPage: (params: MainTasksPageReqVO) => {
    return request.get({ url: '/oa/main-tasks/dept-page', params })
  },

  // 导出本部门主任务 Excel
  exportDeptMainTasks: (params: MainTasksPageReqVO) => {
    return request.download({ url: '/oa/main-tasks/dept-export-excel', params })
  },

  // 获取主任务分页（待审核）
  getMainTasksTodoPage: (params: MainTasksPageReqVO) => {
    return request.get({ url: '/oa/main-tasks/todo-page', params })
  },

  // 获取主任务详情
  getMainTasks: (id: number) => {
    return request.get({ url: '/oa/main-tasks/get?id=' + id })
  },

  // 根据任务编号获取主任务详情
  getByTaskNumber: (taskNumber: string) => {
    return request.get({ url: '/oa/main-tasks/getByTaskNumber?taskNumber=' + taskNumber })
  },

  // 新增主任务
  createMainTasks: (data: MainTasksVO) => {
    return request.post({ url: '/oa/main-tasks/create', data })
  },

  // 修改主任务
  updateMainTasks: (data: MainTasksVO) => {
    return request.put({ url: '/oa/main-tasks/update', data })
  },

  // 删除主任务
  deleteMainTasks: (id: number) => {
    return request.delete({ url: '/oa/main-tasks/delete?id=' + id })
  },

  // 导出主任务
  exportMainTasks: (params: MainTasksPageReqVO) => {
    return request.download({ url: '/oa/main-tasks/export-excel', params })
  },

  // 终止主任务
  terminateMainTasks: (id: number, terminationReason: string) => {
    return request.post({ 
      url: '/oa/main-tasks/terminate', 
      params: { id, terminationReason } 
    })
  },

  // 修改主任务状态（支持收款信息）
  updateMainTasksFinishStatus: (
    id: number,
    taskFinishStatus: number,
    paymentReceived?: number,
    paymentDate?: string,
    paymentAmount?: number,
    paymentMethod?: string
  ) => {
    return request.post({
      url: '/oa/main-tasks/updateMainTasksFinishStatus',
      data: {
        id,
        taskFinishStatus,
        paymentReceived,
        paymentDate,
        paymentAmount,
        paymentMethod
      }
    })
  },

  /** 获取主任务下子任务统计数据 */
  getSubtasksCount: (mainTaskId: number) => {
    return request.get<{
      totalTaskCount: number
      finishedTaskCount: number
    }>({ url: `/oa/main-tasks/subtasks-count?mainTaskId=${mainTaskId}` })
  }
}
